﻿using System.Collections.Generic;
using yiCommerce.Core.Domain.Orders;
using yiCommerce.Core.Domain.Payments;
using yiCommerce.Core.Domain.Shippings;

namespace yiCommerce.Service.Orders
{
    public interface IOrderProcessingService
    {
        PlaceOrderResult PlaceOrder(ProcessPaymentRequest processPaymentRequest);


        void DeleteOrder(Order order);
        void Ship(Shipment shipment, bool notifyCustomer);

        void Deliver(Shipment shipment, bool notifyCustomer);


        void CancelOrder(Order order, bool notifyCustomer);

        void MarkAsAuthorized(Order order);

        void MarkOrderAsPaid(int orderId);

        void MarkOrderShipped(int orderId);
        void MarkOrderDelivered(int orderId);

        IList<string> Refund(Order order);

        void MarkOrderAsCompleted(int orderId);

    }
}